OBHave! Wiki
Welcome to the OBHave! Wiki Documentation related to OBHave! (Oh, BeHave!) OpenSource "plug-n-play" Web Service, that enhances content retrieval from REST API with user behavior based Recommendation System that is powered by Machine Learning. Status of this documentation is Work-In-Progress. For me, this project is a good excuse to learn something worth mentioning at my CV. I am always open for work opportunities (freelance, unless you can offer something interesting / related to this project). Find me from LinekdIn Why ToBHave!? Technological innovation starts from White Box solutions that are expensive to maintain and hard to implement (most of you know this from Test Driven Development). Black Box solutions have steeper learning curve, but are less prone to human errors, thus they are easier to implement and cheaper to maintain. Of course they lack the ability to adapt for detailed precision but the risks human involvement brings to software solutions is worse of the two. Netflix uses a White Box approach for improving their Recommendation System User Experience: Their developers come up with ideas, which they refine to hypothesis, then they code a solution, which is tested and iterated within off-line and on-line environments and then if it's computational and recommendation performance is good enough, the solution is added to the pool of algorithms Netflix uses. OBHave uses a Black Box approach: You put in user data and learning goals and get working recommendations in return. The quality of the recommendation is not based on the skills of the engineering team but the art of choosing user events and right goals combined with the computational powers given to the OBHave server. I like this approach, because in my experience software projects become hard to maintain due to human added complexity; bad ideas that are hard to understand, naive hypothesis, bad code that is hard to understand, naive testing, mismatching environments and growing code base. How O BHaves?! OBHave is not trying to be a compehensive set of Machine Learning algorithms, neither it is trying to be technical architecture to build Machine Learning applications upon. Instead it is a Recommendation System for User Experience problems, based on Mathematical models that support scalable Machine Learning that doesn't need human intervention. OBHave works because it maps user behavior to the REST API resource id's and does nothing else. This is achieved by using HATEOAS compilant UX-components (done with React and Flux, upon Bootstrap and similar component libraries; most plain version could work by adding HTML-classes to the front-end and some JavaScript). OBHave takes in user id (identity is either deduced from login, local storage or "User-Agent" information) and returns a prioritized list of REST API resource id's, which are fetched when needed (lazy loading) and rearranged by the strategies provided to the UX-components (reactive design). Some of the recommendation logic happens in the front-end, which improves the scalability and quality of the OBHave! solution. First use case for OBHave! is to remove category/hierarchy based navigation with Netflix-style Carousel components, which can enhance the amount of relevant categories and content items shown to the user (vertical scrolling and intelligent combination of stub categories with goal oriented content item display priority). What is OBHave!? OBHave is based on the holy trinity of Behavioral Psychology, Machine Learning Mathematics and Computer Science. The goal of "Artificial Intelligence" should not be modeling humans, but augmenting the human reasoning and behavior. I've been fascinated about this topic pretty much all my life and most of you are more than familiar with it. My definition of human behavior and reasoning is based on these concepts: * "Lazyness", our tendency to achieve our goals with minimal effort (we are biological organisms that try to minimize energy consumption) * "Love", our tendency to over achieve our passions (we are biological organisms that need emotional stimuli for gaining experience needed for achieving long-term goals) * "Consciousness", the actor who choses which strategy to use in each situation (we are social biological organisms, who can mimic, evaluate and learn) * "Subconsciousness", the unknown actor who intuitively adds tactics to the impulsive side of our behavior (we are biological organism... well that's it) * "Stress", when we fail with the chosen strategy to achieve our goals in a lazy way, but we desire the goal with love, our conscious mind can't lose focus about the issue and starts pulling alternative tactics from our subconscious experiences, which can lead to learning and increased efficiency in achieving our future goals. I stumbled upon Machine Learning and noticed that my theory of mind can be modeled with the mathematical concepts: * Reward is of Love * Probabilities and Error margins are of Lazyness * Subconsciousness is the weights and states that change after each iteration of a learning algorithm * Consciousness is the perceived Utility and the set of Strategies evaluated * Stress is the learning speed given for the algorithm Then I realized that Content Discovery is a User Experience problem that qualifies as Machine Learning problem: * Machine Learning problem is E = pT. If success rate p of a task T increases in relation to experience E, the problem qualifies as Machine Learning problem. * The formula can be refactored to User Behavior = Inverse of Navigational Distance * User Satisfaction to Discovered Content OBHave! has: * Counsciousness that consists of user behavior events and navigation goals * Subconsciousness that tries to undestand the relation of user behavior, navigation goals and the content it deals with, with the help of Rules, User Groups and Strategies * Love that drives it to decrease navigationa distance between the user and desired Content Items * Lazynessa that makes it a scalable solution * Stress levels that makes it focus on the essential OBHave! is a Black Box of Machine Learning Recommendation System for User Experience problems. Technical Architecture and Design Principles * General_Outline Latest activity Photos and videos are a great way to add visuals to your wiki. Find videos about your topic by exploring Wikia's Video Library. Category:Browse